package org.ala.tcp_feign_common.msg.biz;

import org.ala.tcp_feign_common.msg.IByteMessageEncoder;

import io.netty.buffer.ByteBuf;


/**
 * [0x05 | 消息总长(4字节) | 消息id(8字节) | 发消息时间戳(8子节) | 消息体（不定长）]
 * 
 * @author 骆毅(ala)
 * @date 2024年4月19日
 */
public class BizByteMessageEncoder implements IByteMessageEncoder<BizByteMessage> {

	@Override
	public void encoding(ByteBuf byteBuf, BizByteMessage msg) {
		//	消息类型（1子节）
		byteBuf.writeByte(msg.type().getVal());
		
		//	消息体总长（4子节）
		byte[] body = msg.getBody();
		int len = 8 + 8 + body.length;
		byteBuf.writeInt(len);
		
		//	消息id（8子节）
		byteBuf.writeLong(msg.getMsgId());
		
		//	消息时间戳（8子节）
		byteBuf.writeLong(msg.getTimestamp());
		
		//	消息体
		if (body.length > 0) {byteBuf.writeBytes(body);}
	}
	
}
